import { URL, fileURLToPath } from "node:url";

export type UseResolve = (baseUrl: string) => (pathname: string) => string;

/**
 * 创建URL解析器函数
 *
 * @description 生成一个基于基础URL的路径解析函数，用于安全转换路径
 * @param  baseUrl - 基础URL（用作路径解析的根目录）
 * @returns  路径解析函数
 *
 * @example
 * const resolve = useResolve('https://example.com/assets/');
 * resolve('./icons/logo.png'); // 返回完整解析路径
 */
export const useResolve: UseResolve = baseUrl => {
  /**
   * 解析相对路径为完整文件路径
   *
   * @param  pathname - 需要解析的相对路径或文件名
   * @returns  完整解析后的文件系统路径
   *
   * @example
   * // 假设 baseUrl = 'https://example.com/src/'
   * resolve('utils/helpers.js'); // 返回 '/project/src/utils/helpers.js'
   */
  return pathname => {
    return fileURLToPath(new URL(pathname, baseUrl));
  };
};
